package abd.pr1.Interface;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.border.EmptyBorder;
import javax.swing.table.AbstractTableModel;

import abd.pr1.Models.Episodio;
import abd.pr1.Models.EpisodiosModel;

public class SerieWindow extends JFrame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JPanel contentPane;
	private JLabel nombre;
	private JTextArea titular;
	private JLabel generosText;
	private JTextArea sinopsisText;
	private JTable tablaEpisodios;
	private JButton seguirSerie;
	private JButton cerrar;
	private JButton informacionEpisodios;
	private JSlider votoSlider;
	private JLabel puntuacionText;
	private JButton calificarSerie;
	private JTextPane comentariosSerie;
	private JButton nuevoComentario;
	public SerieWindow(){
		super();
		this.setTitle("Serie");
		this.setSize(640, 620);
		this.setLocationRelativeTo(null);
		
		this.build();
		this.setVisible(true);
		
	}

	private void build(){
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		this.getContentPane().setLayout(new BorderLayout());
		
		nombre = new JLabel("titulo de la serie(fechaInicial - fecha final)");
		
	    titular = new JTextArea("titular de la serie");
	    titular.setLineWrap(true);
		
	    JLabel generosLabel = new JLabel("Genero:");
	    generosText = new JLabel();
		
		JLabel sinopsisLabel = new JLabel("Sinopsis");
		
	    sinopsisText = new JTextArea("argumento de la serie");
		sinopsisText.setRows(4);
		sinopsisText.setLineWrap(true);
		
	    votoSlider = new JSlider(JSlider.HORIZONTAL, 0, 10, 0);
	    votoSlider.setPaintTicks(true);
	    votoSlider.setMajorTickSpacing(1);
	    votoSlider.setPaintLabels(true);
	    
	    JLabel puntuacionLabel = new JLabel("Puntuacion Media:");
	    puntuacionText = new JLabel();
	    calificarSerie = new JButton("Calificar Serie");
	    calificarSerie.setActionCommand("calificar_serie");
	    JLabel comentariosLabel = new JLabel("Comentarios");
	    comentariosSerie= new JTextPane();
	    comentariosSerie.setEditable(false);
		 seguirSerie = new JButton("Seguir Serie");
		 seguirSerie.setActionCommand("seguir_serie");
		 nuevoComentario = new JButton("Nuevo Comentario");
		 nuevoComentario.setActionCommand("nuevo_comentario");
		 cerrar = new JButton("Cerrar");
		 cerrar.setActionCommand("cerrar_serie");
		
		
		
		
		JPanel datosSerie = new JPanel();
		datosSerie.setLayout(new BoxLayout(datosSerie, BoxLayout.Y_AXIS));
		JPanel generos= new JPanel();
		JPanel episodios= new JPanel(new BorderLayout());
		generos.add(generosLabel);
		generos.add(generosText);
		
		datosSerie.add(nombre);
		datosSerie.add(titular);
		datosSerie.add(generos);
		
		datosSerie.add(sinopsisLabel);
		datosSerie.add(new JScrollPane(sinopsisText));
		datosSerie.add(votoSlider);
		datosSerie.add(calificarSerie);
		datosSerie.add(puntuacionLabel);
		datosSerie.add(puntuacionText);
		datosSerie.add(comentariosLabel);
		datosSerie.add(new JScrollPane(comentariosSerie),BorderLayout.CENTER);
		datosSerie.add(nuevoComentario);
		tablaEpisodios = new JTable();
		
		episodios.add(new JScrollPane(tablaEpisodios), BorderLayout.CENTER);
		informacionEpisodios= new JButton("Informacion");
		informacionEpisodios.setActionCommand("informacion_episodios");
		episodios.add(informacionEpisodios,BorderLayout.SOUTH);
		JPanel botones = new JPanel();
		botones.add(seguirSerie);
		botones.add(cerrar);
		
		datosSerie.add(episodios);
		
		this.getContentPane().add(datosSerie,BorderLayout.CENTER);
		this.getContentPane().add(botones,BorderLayout.SOUTH);
		
		
	}
	public void addListener(ActionListener a){
		seguirSerie.addActionListener(a);
		cerrar.addActionListener(a);
		informacionEpisodios.addActionListener(a);
		calificarSerie.addActionListener(a);
		nuevoComentario.addActionListener(a);
	}

	public void setNombre(String nombre){
		this.nombre.setText(nombre);
	}
	public void setTitular(String titular){
		this.titular.setText(titular);
	}
	public void setGeneros(String generos){
		this.generosText.setText(generos);
	}
	public void setSinopsis(String sinopsis){
		this.sinopsisText.setText(sinopsis);
	}
	public void setComentario(String comentarios){
		this.comentariosSerie.setText(comentarios);
	}
	public void setPuntuacion(Double puntuacion){
		this.puntuacionText.setText(puntuacion.toString());
	}
	public void setTextoBoton(String texto){
		this.seguirSerie.setText(texto);
	}
	public void setEpisodioTable(List<Episodio> episodios){
		this.tablaEpisodios.setModel(new EpisodiosModel(episodios));
	}
	public void setCalificacion(int calificacion){
		this.votoSlider.setValue(calificacion);
	}
	public Integer getCalificacion(){
		return this.votoSlider.getValue();
	}
	public Episodio getEpisodioSelected(){
		int s =tablaEpisodios.getSelectedRow();
		if(s>=0){
			return ((EpisodiosModel)this.tablaEpisodios.getModel()).getEpisodioAt(s);
		}else{
			return null;
		}
	}
	
}
